package com.hsnn.medstgmini.base.std.service.impl;


import java.util.List;
import java.util.Map;

import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import com.hsnn.medstgmini.base.dict.dao.DicAreaDao;
import com.hsnn.medstgmini.base.dict.dao.DicCompTypeDao;
import com.hsnn.medstgmini.base.dict.model.DicArea;
import com.hsnn.medstgmini.base.dict.model.DicCompType;
import com.hsnn.medstgmini.base.std.dao.StdCompgroupDao;
import com.hsnn.medstgmini.base.std.dao.StdCompinfoDao;
import com.hsnn.medstgmini.base.std.model.StdCompinfo;
import com.hsnn.medstgmini.base.std.model.StdCompinfoLog;
import com.hsnn.medstgmini.base.std.service.StdCompinfoManager;
import com.hsnn.medstgmini.util.Pagination;
import com.hsnn.medstgmini.util.PinYin;

/**
 * 企业库 实现类 SERVICE
 * @author hssdzxssh
 *
 */
@Service
public class StdCompinfoManagerImpl implements StdCompinfoManager {

	
	private StdCompinfoDao stdCompinfoDao;

	@Autowired
	public void setStdCompinfoDao(StdCompinfoDao stdCompinfoDao) {
		this.stdCompinfoDao = stdCompinfoDao;
	}
	

	@Autowired
	private DicAreaDao areaDao;


	@Autowired
	private DicCompTypeDao compTypeDao;

	
	@Autowired
	private StdCompgroupDao stdCompgroupDao;
	
	/**
	 * 企业库 新增及修改
	 * 
	 * @param stdCompinfo
	 */
	@Transactional
	public void addAndEdit(StdCompinfo stdCompinfo) {
		if(null != stdCompinfo){
			if(stdCompinfo.getStdCompgroup() != null){
				String compGroupId = stdCompinfo.getStdCompgroup().getCompGroupId();
				stdCompinfo.setStdCompgroup(stdCompgroupDao.getById(compGroupId));
			}
			if (stdCompinfo.getDicArea() != null) {
				String areaid = stdCompinfo.getAreaId();
				if(StringUtils.isNotBlank(areaid)){
					stdCompinfo.setDicArea(areaDao.getDicAreaById(areaid));
				}else{
					stdCompinfo.setDicArea(null);
				}
				
			}
			if (stdCompinfo.getDicCompType() != null) {
				String id = stdCompinfo.getDicCompType().getCompRegId();
				stdCompinfo.setDicCompType(compTypeDao.getDicCompTypeById(id));
			}
			if(stdCompinfo.getCompName() !=null &&! stdCompinfo.getCompName().equals("") ){
				stdCompinfo.setCompSpelCode(PinYin.getPinYinHeadChar(stdCompinfo.getCompName()));
				stdCompinfo.setCompShortSpelCode(PinYin.getPinYinHeadChar(stdCompinfo.getCompShortName()));
			}
			stdCompinfoDao.addAndEdit(stdCompinfo);
		}
	}
	
	/**检查重复**/
	@Override
	public Integer checkRepeat(String name,String value,String id,Short type){
		return compTypeDao.checkRepeat(name, value, id,type);
	}
	
	/**
	 * 企业库 信息查询及条件查询
	 * @param stdCompinfo
	 * @return
	 */
	public Pagination queryStdCompinfoList(Pagination page,StdCompinfo stdCompinfo) {
		return stdCompinfoDao.queryStdCompinfoList(page,stdCompinfo);
	}
	
	
	
	
	
	
	public int batchStarts (StdCompinfo stdCompinfo) {
		return stdCompinfoDao.batchStarts(stdCompinfo);
	}
	
	@Override
	public void addForm(StdCompinfo stdCompinfo) {
		stdCompinfoDao.addForm(stdCompinfo);
		
	}
	
	/**
	 * 企业库 根据id查询数据
	 * @param Id
	 * @return
	 */
	public List<StdCompinfo> queryStdCompinfoById(String Id){
	 	return stdCompinfoDao.queryStdCompinfoById(Id);
	}
	
	public StdCompinfo getCompInfoByCode(String compCode) {
		return stdCompinfoDao.getCompInfoByCode(compCode);
	}
	
	/**
	 * 企业库 维护记录查询所有及条件查询
	 * 
	 * @param stdCompinfoLog
	 * @return
	 */
	@Transactional
	@Override
	public List<StdCompinfoLog> queryStdCompinfoLogByName(
			Pagination page,StdCompinfoLog stdCompinfoLog) {
		return stdCompinfoDao.queryStdCompinfoLogByName(
				page,stdCompinfoLog);
	}

	/**
	 * 企业库 信息详情对比数据
	 * @param page
	 * @param stdCompinfoLog
	 * @return
	 */
	@Transactional
	@Override
	public List<Map<String,Object>> queryStdCompinfoLogById(Pagination page,
			StdCompinfoLog stdCompinfoLog) {
		return stdCompinfoDao.queryStdCompinfoLogById(page,
				 stdCompinfoLog);
	}
	
	/**
	 * @category 根据企业id 查询企业详情
	 * @author 韩守松
	 * @date   2015年8月21日
	 * @param  @param compId
	 * @param  @return
	 */
	public StdCompinfo queryStdCompInfoByCompId(String compId) {
		return stdCompinfoDao.queryStdCompInfoByCompId(compId);
	}
	
	/**
	 * @category 根据企业compCode 查询企业详情
	 * @author 韩守松
	 * @date   2015年8月21日
	 * @param  @param compCode
	 * @param  @return
	 */
	public StdCompinfo queryStdCompInfoByCompCode(String compCode) {
		return stdCompinfoDao.queryStdCompInfoByCompCode(compCode);
	}

	/**
	 * 企业库 根据企业id 及状态 查询企业数据
	 * @param page
	 * @param stdCompinfo
	 * @return
	 */
	@Override
	public Pagination queryStdCompinfoById(Pagination page,
			StdCompinfo stdCompinfo) {
		return stdCompinfoDao.queryStdCompinfoById(page, stdCompinfo);
		
	}

	/**
	 * 企业库 根据企业id查询状态为1的数据
	 * @param Id
	 * @return
	 */
	@Override
	public List<StdCompinfo> queryStdCompinfoByIdForMerge(String Id) {
		return stdCompinfoDao.queryStdCompinfoByIdForMerge(Id);
	}

	@Override
	public DicCompType getDicCompRegId(String compRegid) {
		return stdCompinfoDao.getDicCompRegId(compRegid);
	}
	
	/**
	 * 根据条件获取不分页数据
	 * @param page
	 * @return page
	 */
	@Override
	public Pagination getStdCompinfoNoPage(Pagination page){
		return stdCompinfoDao.getStdCompinfoNoPage(page);
	}
	
	/**
	 * 企业库 信息查询及条件查询
	 * @param stdCompinfo
	 * @return
	 */
	public Pagination queryStdCompCount(Pagination page) {
		return stdCompinfoDao.queryStdCompCount(page);
	}
	public List<Map<String, Object>> getCompByName(String compName){
		return stdCompinfoDao.getCompByName(compName);
	}
	
	/**
	 * @category 根据企业名称或简拼搜索企业
	 * @date 2015年11月19日
	 * @param compName
	 * @return
	 */
	public Pagination searchCompByName(Pagination page) {
		return stdCompinfoDao.searchCompByName(page);
	}
	public Map<String, Object> getCompinfoByCode(String compCode){
		return stdCompinfoDao.getCompinfoByCode(compCode);
	}
	public Pagination getCompList(Pagination page){
		return stdCompinfoDao.getCompList(page);
	}
	
	/**
	 * @category 根据企业类型获取此类型下的企业数据
	 * @author 韩守松
	 * @date   2016年1月13日
	 * @param  @param compType
	 * @param  @return
	 */
	public Pagination getCompData(Integer compType,Pagination page){
		return stdCompinfoDao.getCompData(compType,page);
	}
}
